In the field of computing and data communications there are many different networking standards, with one of the most widely used being Ethernet. Ethernet is known as a family of computer networking technologies for local area networks (LANs). Ethernet was commercially introduced in 1980 and standardized in 1985 as IEEE 802.3. Ethernet has largely replaced competing wired LAN technologies and has thus become a primary industry standard for data communications. Systems communicating over Ethernet divide a stream of data into shorter pieces called frames. Each frame contains source and destination addresses as well as error-checking data so that damaged data can be detected and re-transmitted. As per the OSI physical layer model, Ethernet provides services up to and including the data link layer.
In most applications that use the Ethernet, the actual data in question is copied at least once by a central processing unit (CPU). There are a multitude of reasons, why the data is copied at least once, including:                (i) The CPU copies data for memory protection between kernel and user space.        (ii) Ethernet controllers typically have some alignment restrictions on the location of the payload data. These alignment restrictions may conflict with the attributes of the data generated in a streaming source, or consumed in a streaming sink.        (iii) The software architecture used in building the application has typically a natural split into drivers, for example the Ethernet interface and drivers for the streaming source or sink, which has implications on how payload buffers are managed.        
FIG. 1 illustrates a block diagram and data transfer flow of a typical streaming system 100 that comprises shared interconnect 106. The shared interconnect 106 operably couples a central processing unit (CPU) 102, a system random access memory (RAM) 108 that comprises at least a descriptor list 110 and payload buffer 112, an Ethernet controller 104, and a streaming peripheral 114. In this illustrated example, CPU 102, Ethernet controller 104, system RAM 108 and streaming peripheral 114 each transmit and receive information via the shared interconnect 106.
In traditional data flow operation, the streaming peripheral 114 indicates to the CPU 102 that it has payload available, for example indicated in interrupt signal 158. This causes the CPU 102 to make a copy of the payload, and to store this copy into a buffer in the system RAM 108, more specifically, within the payload buffer 112. The CPU 102 then prepares a descriptor 154 that points to the location of the payload buffer 112 within the system RAM 108. The Ethernet medium access control (MAC) layer within the Ethernet controller 104 fetches 156 the descriptor from the descriptor list 110, which refers the Ethernet controller 104 to the correct payload within the payload buffer 112, reads the descriptor and reads the payload referred to by that descriptor.
However, problems may arise when data is copied during high bandwidth streaming, as this copying process consumes significant CPU resources. This means that high bandwidth streaming prevents the use of smaller, cheaper, CPU cores. Also the streaming system 100 would require higher throughput on interconnects and memory, since data needs to be transferred multiple times. All these factors increase power consumption of the streaming system.